package cn.edu.bzu.manager.computer.service;

import cn.edu.bzu.manager.computer.dao.cpu.CpuBrandDAO;
import cn.edu.bzu.manager.computer.dao.cpu.CpuInfoDAO;
import cn.edu.bzu.manager.computer.entity.CpuBrand;
import cn.edu.bzu.manager.computer.entity.CpuInfo;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

/**
 * CPU管理业务逻辑层
 *
 * @author 1923111015董寺卓
 * @since 1.8
 */

@Service
@AllArgsConstructor
public class CpuService {

    private final CpuInfoDAO cpuInfoDAO;
    private final CpuBrandDAO cpuBrandDAO;

    /**
     * 通过CPU信息ID获取CPU信息
     *
     * @param id CPU信息ID
     * @return 指定ID的CPU信息
     */
    public CpuInfo findCpuInfoById(Integer id) {
        Optional<CpuInfo> cpuInfo = cpuInfoDAO.findById(id);
        return cpuInfo.orElse(null);
    }

    /**
     * 获取所有CPU信息集合
     *
     * @return CPU信息集合
     */
    public List<CpuInfo> findAllCpuInfos() {
        return cpuInfoDAO.findAll();
    }

    /**
     * 添加/修改CPU信息
     *
     * @param cpu 要修改/添加的CPU信息对象
     */
    public void saveCpuInfo(CpuInfo cpu) {
        cpuInfoDAO.saveAndFlush(cpu);
    }

    /**
     * 通过ID删除CPU信息
     *
     * @param id 要删除的CPU信息ID
     */
    public void deleteCpuInfoById(Integer id) {
        cpuInfoDAO.deleteById(id);
    }

    /**
     * 获取所有CPU品牌信息
     *
     * @return CPU品牌集合
     */
    public List<CpuBrand> findAllCpuBrands() {
        return cpuBrandDAO.findAll();
    }

    /**
     * 添加/修改CPU品牌
     *
     * @param cpuBrand CPU品牌对象
     * @return 修改的CPU品牌
     */
    public CpuBrand saveCpuBrand(CpuBrand cpuBrand) {
        return cpuBrandDAO.saveAndFlush(cpuBrand);
    }

    /**
     * 通过CPU品牌ID删除CPU品牌
     *
     * @param id 品牌ID
     */
    public void deleteCpuBrandById(Integer id) {
        cpuBrandDAO.deleteById(id);
    }

}
